// `iam/pkg/log`是一个生产可用的支持分级和结构化的高性能日志包，基于以下目标封装：
//
// - 易于配置，导入时通过定制的配置创建默认 logger ，导入后可使用指定配置重新初始
// 化 logger ，且能够支持命令行配置。示例参考`iam/pkg/log/example/configure`；
//
// - 易于使用，zap中基于强类型的高性能 logger 只能支持结构化日志，基于弱类型的
// SugaredLogger 虽然性能有劣化但同时支持结构化和 Printf 风格，以 Info 为例，封
// 装后，在一致的调用方式中， Info 方法使用强类型模式， Infof 和 Infow 方法使用
// 弱类型模式（对比zap的调用方式[README](https://pkg.go.dev/go.uber.org/zap#section-readme)）。
// 在此基础上还包含一些业务相关的逻辑。示例参考`iam/pkg/log/example`下的`simple`
// 和`context`；
//
// # 未解决的问题：
//
// - 配置项`ErrorOutputPaths`被描述为内部错误的输出路径，但是通过语句`log.Infow("message", 0, 1)`
// 构建的内部错误并不能写入此配置指定的通道，已在社区提问：
// [discussions](https://github.com/uber-go/zap/discussions/1400)
//
// # 其他
//
// - 官方说明zap本身就是zapcore的一层很薄的封装，出于易用考虑，即便是较小的项目也
// 值得再做一层较薄的封装；
//
// - 官方提供了类似 NewProduction() 这样的预设，但并不见得合理，这个
// [issue](https://github.com/uber-go/zap/issues/785)中提问，为什么 NewProduction()
// 预设中的`OutputPaths`是`stderr`，答案也仅仅是为了与标准库中的log包保持统一；
package log // import "gitee.com/baihr/iam/pkg/log"
